/**   
* @Title: CustomButton.java 
* @author 6335yz   
* @date 2015年8月18日 下午3:06:52 
*/
package com.onstar.cn.weight;

import android.content.Context;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.Button;

import com.onstar.cn.common.util.BitmapUtil;

/**
 * @ClassName: CustomButton
 * @Description: TODO
 * @author 6335yz
 * @date 2015年8月18日 下午3:06:52
 */
public class CustomButton extends Button {

	/**
	 * @Description: TODO
	 * @author 6335yz
	 * @date 2015年8月18日 下午3:06:56
	 */


    /*起始点*/
	private int mInitX;
	private int mInitY;

	/*高度和宽度*/
	private int mWidth;
	private int mHeight;

	/*绘制的半径*/
	private int mRadius;
	private int mStep;
	private int mDrawRadius;

	private boolean mDrawFinish;

	private final int DURATION = 150;
	private final int FREQUENCY = 10;
	private int mCycle;
	private final Rect mRect = new Rect();

	private Paint mRevealPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

	public CustomButton(Context context) {
		super(context, null);
//		initView(context);
	}

	public CustomButton(Context context, AttributeSet attrs) {
		super(context, attrs);
//		initView(context);
	}

	/**
	 * @param context
	 * @param attrs
	 * @param defStyleAttr
	 */
	public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
//		initView(context);
	}

	public void setButtonBackground(int resId) {
		BitmapUtil.recycleButton(this);
		setBackgroundResource(resId);
	}

//	private void initView(Context context) {
//		mRevealPaint.setColor(0x25000000);
//		mCycle = DURATION / FREQUENCY;
//		final float density = getResources().getDisplayMetrics().density ;
//		mCycle = (int) (density*mCycle);
//		mDrawFinish = true;
//
//	}
//
//	@Override
//	protected void onDraw(Canvas canvas) {
//		if (mDrawFinish) {
//			super.onDraw(canvas);
//			return;
//		}
//		canvas.drawColor(0x15000000);
//		super.onDraw(canvas);
//		if (mStep == 0) {
//			return;
//		}
//		mDrawRadius = mDrawRadius + mStep;
//
//
//		if (mDrawRadius > mRadius) {
//			mDrawRadius = 0;
//			canvas.drawCircle(mInitX, mInitY, mRadius, mRevealPaint);
//			mDrawFinish = true;
//			invalidate();
//			return;
//		}
//
//		canvas.drawCircle(mInitX, mInitY, mDrawRadius, mRevealPaint);
//		ViewCompat.postInvalidateOnAnimation(this);
//	}
//
//	@Override
//	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//		mRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
//	}
//
//	private void updateDrawData() {
//		int radiusLeftTop = (int) Math.sqrt((mRect.left - mInitX) * (mRect.left - mInitX) +
//				(mRect.top - mInitY) * (mRect.top - mInitY));
//		int radiusRightTop = (int) Math.sqrt((mRect.right - mInitX) * (mRect.right - mInitX) +
//				(mRect.top - mInitY) * (mRect.top - mInitY));
//		int radiusLeftBottom = (int) Math.sqrt((mRect.left - mInitX) * (mRect.left - mInitX) +
//				(mRect.bottom - mInitY) * (mRect.bottom - mInitY));
//		int radiusRightBottom = (int) Math.sqrt((mRect.right - mInitX) * (mRect.right - mInitX) +
//				(mRect.bottom - mInitY) * (mRect.bottom - mInitY));
//		mRadius = getMax(radiusLeftTop, radiusRightTop, radiusLeftBottom, radiusRightBottom);
//		mStep = mRadius/mCycle;
//
//	}
//
//	@Override
//	public boolean onTouchEvent(MotionEvent event) {
//		final int action = MotionEventCompat.getActionMasked(event);
//		switch (action) {
//			case MotionEvent.ACTION_DOWN: {
//				mDrawFinish = false;
//				int index = MotionEventCompat.getActionIndex(event);
//				int eventId = MotionEventCompat.getPointerId(event, index);
//				if (eventId != -1) {
//					mInitX = (int) MotionEventCompat.getX(event, index);
//					mInitY = (int) MotionEventCompat.getY(event, index);
//					updateDrawData();
//					invalidate();
//				}
//				break;
//			}
//			case MotionEvent.ACTION_CANCEL:
//			case MotionEvent.ACTION_UP:
//				mStep = (int) (5 * mStep);
//				break;
//		}
//		return super.onTouchEvent(event);
//	}
//
//	private int getMax(int... radius) {
//		if (radius.length == 0) {
//			return 0;
//		}
//		int max = radius[0];
//		for (int m : radius) {
//			if (m > max) {
//				max = m;
//			}
//		}
//		return max;
//	}
//
//	@Override
//	public boolean performClick() {
//
//		postDelayed(new Runnable() {
//			@Override
//			public void run() {
//				CustomButton.super.performClick();
//			}
//		},150) ;
//		return true ;
//
//	}
}
